package com.ecommerce.order.service;

import com.ecommerce.order.dto.OrderItemRequest;
import java.util.List;

/**
 * 库存服务接口
 */
public interface InventoryService {
    /**
     * 预扣库存
     * @param items 订单项列表
     * @return 是否预扣成功
     */
    boolean reserveInventory(List<OrderItemRequest> items);
    
    /**
     * 预扣库存
     * @param productId 商品ID
     * @param quantity 数量
     * @return 是否预扣成功
     */
    boolean reserveInventory(Long productId, Integer quantity);
    
    /**
     * 回滚库存预扣
     * @param items 订单项列表
     */
    void rollbackInventoryReservation(List<OrderItemRequest> items);
    
    /**
     * 释放预扣库存
     * @param productId 商品ID
     * @param quantity 数量
     */
    void releaseReservedInventory(Long productId, Integer quantity);
    
    /**
     * 释放库存（取消订单时使用）
     * @param productId 商品ID
     * @param quantity 数量
     */
    void releaseInventory(Long productId, Integer quantity);
}